home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Modules / BackSpaceModules / Source / Bezier / BezierWraps.psw < prev    next >
Text File  |  1992-04-02  |  2KB  |  69 lines

  1. /* ------------ These wraps are all for bezier ---------------- */
  2. /* This bezier hack was mostly written by mike dixon.  -s         */
  3.  
  4. defineps PSWbezierCreate()
  5.  
  6.     128 array /myArray exch def
  7.     
  8.     /h 0 def    %starting hue
  9.  
  10.     /setnewcolor    %tweak the hue
  11.     {
  12.         h 1 50 div add
  13.         dup 1 gt { 1.0 sub } if
  14.         dup /h exch def
  15.         1 1 sethsbcolor
  16.     } def
  17.  
  18.  
  19.     /adj { % dx
  20.         rand 50000000 idiv add dup 0 le {-5}{5} ifelse add }
  21.     bind def % dx'
  22.  
  23.     /upd { %  dx x max
  24.             yield exch 2 index add 2 copy le  % dx max x' over?
  25.             { 1 index sub sub exch neg adj neg exch }
  26.             { exch pop dup 0 lt { neg exch adj exch } if }
  27.             ifelse }
  28.     bind def % dx' x'
  29.  
  30.     /xtr { % dxa xa dya ya dxb xb dyb yb ...
  31.             14 index 13 index 12 index 11 index 10 index 9 index 8 index 7 index }
  32.     bind def % dxa xa dya ya dxb xb dyb yb ... xa ya xb yb ...
  33.  
  34.     /updl { % dxa xa dya ya dxb xb dyb yb ...
  35.             xtr 24 8 roll
  36.             4 { ht upd 16 2 roll wd upd 16 2 roll } repeat
  37.                     % xa ya xb yb ... dxa' xa' dya' ya' dxb' xb' dyb' yb' ...
  38.             setnewcolor xtr moveto curveto stroke
  39.             }
  40.     bind def
  41.  
  42.     /updlNoDraw {
  43.             xtr 24 8 roll
  44.             4 { ht upd 16 2 roll wd upd 16 2 roll } repeat
  45.             xtr 8 { pop } repeat
  46.             }
  47.     bind def
  48.  
  49. endps
  50.  
  51. defineps PSWbezierInit(float width, height)
  52.  
  53.     /wd width def
  54.     /ht height def
  55.  
  56.     1 1 2 1 3 1 4 1      5 1 6 1 7 1 8 1
  57.     14 { updlNoDraw } repeat
  58.     myArray astore pop
  59.     
  60. endps
  61.  
  62. defineps PSWbezierOneStep()
  63.  
  64. myArray aload pop
  65. 128 -8 roll 0 setgray moveto curveto stroke updl
  66. myArray astore pop
  67.  
  68. endps
  69.